third-party.tsx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { PermissionAction } from '@supabase/shared-types/out/constants'
  2. import { useParams } from 'common'
  3. import { PageContainer } from 'ui-patterns/PageContainer'
  4. import { ThirdPartyAuthForm } from '@/components/interfaces/Auth/ThirdPartyAuthForm'
  5. import AuthLayout from '@/components/layouts/AuthLayout/AuthLayout'
  6. import { AuthProvidersLayout } from '@/components/layouts/AuthLayout/AuthProvidersLayout'
  7. import DefaultLayout from '@/components/layouts/DefaultLayout'
  8. import NoPermission from '@/components/ui/NoPermission'
  9. import { UnknownInterface } from '@/components/ui/UnknownInterface'
  10. import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
  11. import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled'
  12. import type { NextPageWithLayout } from '@/types'
  13. const ThirdPartyPage: NextPageWithLayout = () => {
  14. const { ref } = useParams()
  15. const { can: canReadAuthSettings, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
  16. PermissionAction.READ,
  17. 'custom_config_gotrue'
  18. )
  19. const showThirdPartyAuth = useIsFeatureEnabled('authentication:third_party_auth')
  20. if (!showThirdPartyAuth) {
  21. return (
  22. <AuthLayout title="Sign In / Providers">
  23. <UnknownInterface urlBack={`/project/${ref}/auth/providers`} />
  24. </AuthLayout>
  25. )
  26. }
  27. return (
  28. <AuthProvidersLayout>
  29. {isPermissionsLoaded && !canReadAuthSettings ? (
  30. <NoPermission isFullPage resourceText="access your project's auth provider settings" />
  31. ) : (
  32. <PageContainer size="default" className="pb-16">
  33. <ThirdPartyAuthForm />
  34. </PageContainer>
  35. )}
  36. </AuthProvidersLayout>
  37. )
  38. }
  39. ThirdPartyPage.getLayout = (page) => <DefaultLayout>{page}</DefaultLayout>
  40. export default ThirdPartyPage